package com.nbgroup.controller;


import cn.hutool.core.bean.BeanUtil;
import com.nbgroup.pojo.DictData;
import com.nbgroup.pojo.common.PageBean;
import com.nbgroup.pojo.common.Result;
import com.nbgroup.pojo.dto.DictDataDTO;
import com.nbgroup.pojo.dto.DictDataPageQueryDTO;
import com.nbgroup.service.IDictDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author
 * @since 2024-10-26
 */
@RestController
@Api(tags = "字典数据接口")
@RequestMapping("/system/dict/data")
public class DictDataController {

    @Autowired
    private IDictDataService dictDataService;

    /**
     * 查字典
     */
    @GetMapping("/type/{dictType}")
    public Result querySex(@PathVariable String dictType){
        List<DictData> list = dictDataService.lambdaQuery().eq(DictData::getDictType, dictType).list();
        return Result.success(list);
    }

    /**
     * 分页查询字典数据
     */
    @GetMapping("/list")
    @ApiOperation("分页查询字典数据")
    public PageBean pageQuery(DictDataPageQueryDTO dto){
        PageBean  page = dictDataService.pageQuery(dto);
        page.setCode(200);
        page.setMsg("查询成功");
        return page;
    }

    /**
     * 新增字典数据
     */
    @PostMapping
    @ApiOperation(("新增字典数据"))
    public Result add(@RequestBody DictDataDTO dto){
        DictData dictData = BeanUtil.copyProperties(dto, DictData.class);
        if ("N".equals(dictData.getIsDefault())){
            dictData.setIsDefaulty(0);
        }else {
            dictData.setIsDefaulty(1);
        }
        dictDataService.save(dictData);
        return new Result();
    }

    /**
     *  根据id查询
     */
    @GetMapping("/{dictCode}")
    @ApiOperation("查询回显")
    public Result queryById(@PathVariable Long dictCode){
        DictData data = dictDataService.getById(dictCode);
        return Result.success(data);
    }

    /**
     * 修改字典数据
     */
    @PutMapping
    @ApiOperation("修改字典数据")
    public Result update(@RequestBody DictDataDTO dto){
        dictDataService.updateData(dto);
        return new Result();
    }

    /**
     * 删除字典数据
     */
    @DeleteMapping("/{dictCode}")
    @ApiOperation("删除字典数据")
    public Result delById(@PathVariable @ApiParam("字典数据id") Long dictCode){
        dictDataService.removeById(dictCode);
        return new Result();
    }

    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryLevel(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result querySubject(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryStatus(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryItem(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryActStatus(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryChannel(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryApplicable(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryNormal(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryShowOrHide(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryLimitTime(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryWarnTime(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }
    //
    // /**
    //  * 查字典
    //  */
    // @GetMapping("/{type}")
    // public Result queryReason(@PathVariable String type){
    //     LambdaQueryChainWrapper<DictData> wrapper = dictDataService.lambdaQuery().eq(DictData::getDictType, type);
    //     List<DictData> list = dictDataService.list(wrapper);
    //     return Result.success(list);
    // }


}
